#ifndef SERIALIZABLE_STRING_H
#define SERIALIZABLE_STRING_H

#include "Serializable.h"
#include <string>

// A string which knows how to print and parse itself

class Serializable_String : Serializable {
public:
    Serializable_String(const std::string& v) {
        value = v;
    }

    std::ostream& print(std::ostream& os) const {
        os << value;
        return os;
    }

    bool match(Parser& parser) {
        return parser.match(value) == 1;
    }

    std::string value;
};

std::ostream& operator<<( std::ostream& os,
                          const Serializable_String& v ) {
    return v.print(os);
}

#endif
